package com.zim.access.domain.session;

import com.zim.access.common.chat.Session;

/**
 * 提供SessionDo 与 Session 的转换
 */
public class SessionConverter {

    public static Session<String> toSession(SessionDo sessionDo) {
        Session session = new Session<String>();
        session.setId(sessionDo.getId());
        session.setFrom(new Session.From()
                .setId(sessionDo.getFromId())
                .setName(sessionDo.getFromName()));
        session.setTo(new Session.To()
                .setId(sessionDo.getToId())
                .setName(sessionDo.getToName()));
        session.setLastMsg(new Session.LastMsg()
                .setId(sessionDo.getLastMsgId())
                .setContent(sessionDo.getLastMsgContent())
                .setTimestamp(sessionDo.getLastMsgTimestamp()));
        session.setUnReadCut(sessionDo.getUnReadCut());
        session.setTimestamp(sessionDo.getTimestamp());
        return session;
    }

    public static SessionDo toSessionDao(Session<String> session) {
        SessionDo sessionDo = new SessionDo();
        sessionDo.setId(session.getId());
        sessionDo.setTimestamp(session.getTimestamp());
        sessionDo.setUnReadCut(session.getUnReadCut());

        if (session.getFrom() != null) {
            sessionDo.setFromId(session.getFrom().getId());
            sessionDo.setFromName(session.getFrom().getName());
        }

        if (session.getTo() != null) {
            sessionDo.setToId(session.getTo().getId());
            sessionDo.setToName(session.getTo().getName());
        }

        if (session.getLastMsg() != null) {
            sessionDo.setLastMsgId(session.getLastMsg().getId());
            sessionDo.setLastMsgContent(session.getLastMsg().getContent());
            sessionDo.setLastMsgTimestamp(session.getLastMsg().getTimestamp());
        }
        return sessionDo;
    }
}
